// Grunt 的入口文件
// 用于定义一些需要 Grunt 自动执行的任务
// 需要导出一个函数
// 此函数接受一个 grunt 的形参，内部提供一些创建任务时可以用到的api

// 注册任务
// module.exports = grunt => {
//     /**
//      * registerTask 注册任务
//      * 参数1：任务名称
//      * 参数2：如果是字符串，则是Available tasks 的任务描述
//      * 参数3：执行函数
//      * 
//      * 
//      * default：默认执行的任务，可以是一个执行方法，也可以是个执行方法数组，按照顺序依次执行
//      * 
//      * 
//      * async-task:异步任务
//      * 1. 需要用到this.async()，所以不能使用箭头函数，只能使用普通的函数
//      * 2. const done = this.async()
//      * 3. 异步代码执行完毕，需要执行done()
//      * 
//      */

//     grunt.registerTask('foo', () => {
//         console.log('foo task')
//     })


//     grunt.registerTask('bar', '任务描述', () => {
//         console.log('bar task')
//     })

//     // ----------------------------------------------------------

//     // default，默认执行的任务
//     grunt.registerTask('default', ['foo', 'bar'])

//     // -----------------------------------------------------------

//     //异步任务
//     grunt.registerTask('async-task', function () {
//         const done = this.async()
//         setTimeout(() => {
//             console.log('async-task working')
//             done()
//         }, 1000);
//     })

//     //------------------------------------------------------------

//     // 标记任务失败（同步：return false）
//     grunt.registerTask('bad-task', () => {
//         console.log('bad-task task')
//         return false
//     })

//     grunt.registerTask('default', ['foo', 'bad-task', 'bar'])

//     //标记任务失败（异步done(false)）
//     grunt.registerTask('async-bad', function () {
//         const done = this.async()
//         console.log('async-task')
//         done(false)
//     })

//     // -----------------------------------------------------------


// }

// 标记失败
// module.exports = grunt => {
//     /**
//      * 
//      * 任务标记失败：当前任务失败，后续任务不在执行
//      * 同步：return false
//      * 异步：done(false)
//      */

//     // 标记任务失败（同步：return false）
//     grunt.registerTask('bad-task', () => {
//         console.log('bad-task task')
//         return false
//     })

//     // grunt.registerTask('default', ['foo', 'bad-task', 'bar'])

//     //标记任务失败（异步done(false)）
//     grunt.registerTask('async-bad', function () {
//         const done = this.async()
//         console.log('async-task')
//         done(false)
//     })
// }

// 配置方法
// module.exports = grunt => {
//     /**
//      * initConfig:配置方法
//      */
//     grunt.initConfig({
//         foo:'123',
//         bar:{
//             name:'bar'
//         }
//     })

//     grunt.registerTask('foo',() => {
//         let gruntConfig = grunt.config('foo')
//         console.log(gruntConfig)
//     })

//     grunt.registerTask('bar',() => {
//         let gruntConfig = grunt.config('bar')
//         console.log(gruntConfig)
//     })
// }

// 多目标任务
module.exports = grunt => {
    /**
     * registerMultiTask:注册多目标任务
     * 多目标模式，可以让任务根据配置形成多个子任务
     * 配置值是对象
     */
    grunt.initConfig({
        build:{
            foo:'foo',
            bar:'bar'
        }
    })
    grunt.registerMultiTask('build', () => {
        console.log('多目标任务')
    })
}